package com.hdl.dao;

import java.sql.SQLException;
import java.util.List;

import com.hdl.dto.UserSearch;
import com.hdl.entity.HdlUser;
import com.hdl.vo.HdlUserVO;

public interface UserDao {
	
	/**
	 *  登陆验证
	 * @param loginUser 需要验证的用户对象
	 * @return 具有所有用户信息的用户对象
	 */
	HdlUser login(HdlUser loginUser);

	/**
	 * 用户注册
	 * @param user
	 */
	void register(HdlUser user);

	/**
	 * 用户激活 
	 * @param code 传入对应的激活码
	 */
	int active(String code);

	/**

	 * update 修改用户信息
	 * @param user
	 */
	void update(HdlUser user);

	/**
	 * selectById 通过用户id获取用户记录
	 * @param userId
	 * @return
	 */
	HdlUser selectById(String userId);
	/**
	 * selectUserById 通过用户Id查询一名用户记录
	 * @param userId 用户id
	 * @return
	 */
	HdlUser selectUserById(String userId);
	/**
	 * 修改密码
	 * @param id
	 * @param psd
	 */
	void UpdatePsd(String id,String psd);
	


	/**
	 * findPsdByEmail 通过用户的邮箱找回用户的密码
	 * @param email
	 * @return
	 */
	HdlUser findPsdByEmail(String email);
	
	/**
	 * 统计用户表里面有角色身份的人数
	 * @param search
	 * @return
	 * @throws SQLException
	 */
	
	long count(UserSearch search)throws SQLException;
	/**
	 * 分页查询
	 * @param user
	 * @return
	 * @throws SQLException
	 */
	
	
	List<HdlUserVO> select(UserSearch user,int index,int len)throws SQLException;
	
	/**
	 * 统计非空字段
	 * @param user
	 * @return
	 * @throws SQLException
	 */
	long selectModelCount(HdlUser user)throws SQLException;
	/**
	 * 查询非空
	 * @param user
	 * @return
	 * @throws SQLException
	 */
	HdlUser selectModel(HdlUser user)throws SQLException;
	List<HdlUser>selectModel(HdlUser user,int index,int len)throws SQLException;	
	/**
	 * 修改非空字段
	 * @param user
	 * @return
	 * @throws SQLException
	 */
	int updateSelective(HdlUser user)throws SQLException;
	
	/**
	 * 用户的删除
	 * @param user
	 * @return
	 * @throws SQLException
	 */
	int delete(String user) throws SQLException;

	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

	/**
	 * checkName 校验用户名是否被注册过了
	 * @param userName
	 * @return
	 */
	boolean checkName(String userName);

}
